FlatKitCopyTexture.shader 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. Shader "Hidden/FlatKit/CopyTexture"
  2. {
  3. SubShader
  4. {
  5. Tags { "RenderType"="Opaque" "RenderPipeline" = "UniversalPipeline"}
  6. LOD 100
  7. ZWrite Off Cull Off
  8. Pass
  9. {
  10. Name "Custom Copy Texture"
  11. HLSLPROGRAM
  12. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
  13. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  14. #pragma multi_compile _ _USE_DRAW_PROCEDURAL
  15. float4 _SourceSize;
  16. TEXTURE2D_X(_EffectTexture);
  17. SAMPLER(sampler_EffectTexture);
  18. float4 SampleEffectTexture(float2 uv)
  19. {
  20. return SAMPLE_TEXTURE2D_X(_EffectTexture, sampler_EffectTexture, UnityStereoTransformScreenSpaceTex(uv));
  21. }
  22. struct Attributes
  23. {
  24. float4 positionHCS : POSITION;
  25. float2 uv : TEXCOORD0;
  26. UNITY_VERTEX_INPUT_INSTANCE_ID
  27. };
  28. struct Varyings
  29. {
  30. float4 positionCS : SV_POSITION;
  31. float2 uv : TEXCOORD0;
  32. UNITY_VERTEX_OUTPUT_STEREO
  33. };
  34. Varyings vert(Attributes input)
  35. {
  36. Varyings output;
  37. UNITY_SETUP_INSTANCE_ID(input);
  38. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
  39. #if _USE_DRAW_PROCEDURAL
  40. output.positionCS = float4(input.positionHCS.xyz, 1.0);
  41. #if UNITY_UV_STARTS_AT_TOP
  42. output.positionCS.y *= -1;
  43. #endif
  44. #else
  45. output.positionCS = TransformObjectToHClip(input.positionHCS.xyz);
  46. #endif
  47. output.uv = input.uv;
  48. return output;
  49. }
  50. half4 frag(Varyings input) : SV_Target
  51. {
  52. UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input);
  53. float4 c = SampleEffectTexture(input.uv);
  54. return c;
  55. }
  56. #pragma vertex vert
  57. #pragma fragment frag
  58. ENDHLSL
  59. }
  60. }
  61. }